草庐IT

python - 没有找到 tkinter 的匹配分布

全部标签

ruby - 是否存在用于匹配哈希的 RSpec2 匹配器?

future读者请注意:认为RSpec不认为您的哈希值相等?一个可能是OrderedHash,但从常规的RSpec输出中您无法分辨。这就是引发这篇文章的问题。原始问题:假设我有一个规范,我想在其中测试某个方法是否生成了适当的哈希值。it'shouldgeneratetheHashcorrectly'doexpected={:foo=>1,'baz'=>2}subject.some_method_that_should_generate_the_hash.should==expectedend这经常会失败,因为具有相同键值对的不同哈希可能会以不同的顺序返回它们的对。结果如下:Failur

ruby - 有没有一种干净的方法来访问哈希数组中的哈希值?

在这段代码中:arr=[{id:1,body:'foo'},{id:2,body:'bar'},{id:3,body:'foobar'}]arr.map{|h|h[:id]}#=>[1,2,3]是否有更简洁的方法从这样的哈希数组中获取值?Underscore.jshaspluck,我想知道是否有Ruby等价物。 最佳答案 如果你不介意猴子修补,你可以自己动手:arr=[{id:1,body:'foo'},{id:2,body:'bar'},{id:3,body:'foobar'}]classArraydefpluck(key)map

ruby - 有没有办法查看 Sequel 表达式将生成的原始 SQL?

假设我有一个像这样的Sequel表达式:db.select(:id).from(:some_table).where(:foo=>5)有没有办法获取这将生成的SQL字符串(即"SELECTidFROMsome_tableWHEREfoo=5")?我注意到对上述表达式的结果调用inspect或to_s包括生成的SQL,但不确定如何直接访问它。以及不返回数据集的Sequel表达式如何,例如:db.from(:some_table).update(:foo=>5)是否可以在执行之前从中看到SQL? 最佳答案 你可以在数据集上调用sql:d

ruby - 在没有 ActiveRecord 的情况下为属性设置默认值的最佳方法?

我认为这个问题(Howtodoattr_accessor_with_defaultinruby?)回答了我的问题,但我没有使用ActiveRecord和after_initialize取决于它。为attr_accessor实现默认值的Ruby最佳实践是什么?是this最接近文档的东西是什么?我应该停止使用attr_accessor因为它是私有(private)的吗? 最佳答案 classFoo#class-levelinstancevariable#settinginitialvalue(optional)@class_var=42

ruby:如何在数组中找到非唯一元素并打印每个元素的出现次数?

我有a=["a","d","c","b","b","c","c"]并且需要打印类似的东西(按出现次数降序排列):c:3b:2我理解第一部分(发现非唯一)是:b=a.select{|e|a.count(e)>1}=>["c","b","b","c","c"]或putsb.select{|e,c|[e,a.count(e)]}.uniqcb如何按出现次数倒序输出每个非唯一值? 最佳答案 putsa.uniq.map{|e|[a.count(e),e]}.select{|c,_|c>1}.sort.reverse.map{|c,e|"#{

ruby - 如何在 ruby​​ 中读取没有 quote_char 的 CSV?

我有一个没有引号字符的TSV文件。每当数据中出现\t时,它总是分隔列,而不是列值的一部分。每当"出现时,它始终是列值的一部分,并且永远不会包含列值。我想用Ruby阅读这个CSV,但它给了我/Users/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/csv.rb:1925:in`block(2levels)inshift':Illegalquotinginline9506.(CSV::MalformedCSVError)我的代码是:CSV.foreach(input_file,{:col_sep=>"\t",:headers=>true})do|r

ruby-on-rails - 如何找到声明 ruby​​ 方法的位置?

我在activeRecord类上有一个ruby​​方法(停用!)。但是,我似乎找不到该方法的声明位置。这个项目有很多开发人员,所以它可能在任何地方。有一个停用!在一个不相关的类上,但它似乎没有被调用。任何想法如何找到一个实例的所有父类(superclass),或者在哪里找到停用的代码!? 最佳答案 第一个问题是:它是一个实际的方法吗?obj.method(:deactivate!)会引发错误吗?如果不支持,那么您可以使用Method#source_location(仅在Ruby1.9中,backports不支持):obj.metho

ruby-on-rails - 没有路由匹配 { :controller= >"stocks", :action= >"create"} RSpec Rails 3

我不明白为什么我在运行RSpec时收到此错误消息:Failure/Error:post:createActionController::RoutingError:Noroutematches{:controller=>"stocks",:action=>"create"}controllerstocks存在,actioncreate存在,它应该使用的路由是这样的:match'stocks/:user_id'=>'stocks#create',:via=>:post,:as=>:query路由文件:FruthScreener::Application.routes.drawdoroot:

ruby - 有没有办法知道当前的 rake 任务?

是否有可能知道ruby​​中当前的rake任务:#Rakefiletask:installdoMyApp.somemethod(options)end#myapp.rbclassMyAppdefsomemetod(opts)##current_task?endend编辑我问的是任何可以查询的环境|全局变量,因为我想让应用程序智能化rake,而不是修改任务本身。我正在考虑让应用程序在由rake运行时表现不同。 最佳答案 这个问题已经被问过几个地方了,我认为没有一个答案很好......我认为答案是检查Rake.application.t

ruby - 正则表达式匹配 string1,除非前面有 string2

使用Ruby,我如何使用单个正则表达式来匹配“xyyayxy+y”中所有出现的“y”且前面没有x(y,ay,+y)?/[^x]y/也匹配前面的字符,所以我需要一个替代... 最佳答案 您需要一个零宽度的否定后视断言。尝试/(?它准确说明了您要查找的内容,即找到所有“y”前面没有“x”,但不包括前面的字符,即零宽度部分。编辑添加:显然这仅受Ruby1.9及更高版本的支持。 关于ruby-正则表达式匹配string1,除非前面有string2,我们在StackOverflow上找到一个类似的